package edu.princeton.cs.algs4;

public class Stopwatch {

	private final long start;

	/**
	 * Initializes a new stopwatch.
	 */
	public Stopwatch() {
		start = System.currentTimeMillis();
	}

	/**
	 * Returns the elapsed CPU time (in seconds) since the stopwatch was created.
	 *
	 * @return elapsed CPU time (in seconds) since the stopwatch was created
	 */
	public double elapsedTime() {
		long now = System.currentTimeMillis();
		return (now - start) / 1000.0;
	}

	/**
	 * Unit tests the {@code Stopwatch} data type. Takes a command-line argument
	 * {@code n} and computes the sum of the square roots of the first {@code n}
	 * positive integers, first using {@code Math.sqrt()}, then using
	 * {@code Math.pow()}. It prints to standard output the sum and the amount of
	 * time to compute the sum. Note that the discrete sum can be approximated by an
	 * integral - the sum should be approximately 2/3 * (n^(3/2) - 1).
	 *
	 * @param args the command-line arguments
	 */
	public static void mains(String[] args) {
		int n = Integer.parseInt(args[0]);

		// sum of square roots of integers from 1 to n using Math.sqrt(x).
		Stopwatch timer1 = new Stopwatch();
		double sum1 = 0.0;
		for (int i = 1; i <= n; i++) {
			sum1 += Math.sqrt(i);
		}
		double time1 = timer1.elapsedTime();
		StdOut.printf("%e (%.2f seconds)\n", sum1, time1);

		// sum of square roots of integers from 1 to n using Math.pow(x, 0.5).
		Stopwatch timer2 = new Stopwatch();
		double sum2 = 0.0;
		for (int i = 1; i <= n; i++) {
			sum2 += Math.pow(i, 0.5);
		}
		double time2 = timer2.elapsedTime();
		StdOut.printf("%e (%.2f seconds)\n", sum2, time2);
	}

	public static void main(String[] args) throws Exception{
		Stopwatch timer=new Stopwatch();
				
		Thread.sleep(60*1000);
		
		System.out.println(timer.elapsedTime());
	}
}